popover: Bring back the activate-default signal
authorMatthias Clasen <mclasen@redhat.com>
Wed, 12 Jun 2019 16:54:57 +0000 (16:54 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 13 Jun 2019 01:49:59 +0000 (21:49 -0400)
As long as key bindings only work via action
signals, we need a signal here in order to
override the Enter/Space bindings for popover
menus.

gtk/gtkpopover.c
gtk/gtkpopover.h

index 660688836dc58adb8eb4451fd908f68a22449777..d4d2470ef6683fad4d090ba4939f569e40ad1626 100644 (file)
@@ -166,6 +166,7 @@ typedef struct {
 
 enum {
   CLOSED,
+  ACTIVATE_DEFAULT,
   LAST_SIGNAL
 };
 
@@ -489,11 +490,8 @@ allocate_contents (GtkGizmo *gizmo,
 }
 
 static void
-activate_default_cb (GSimpleAction *action,
-                     GVariant      *parameter,
-                     gpointer       data)
+gtk_popover_activate_default (GtkPopover *popover)
 {
-  GtkPopover *popover = data;
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
   GtkWidget *focus_widget;
 
@@ -509,6 +507,14 @@ activate_default_cb (GSimpleAction *action,
     gtk_widget_activate (focus_widget);
 }
 
+static void
+activate_default_cb (GSimpleAction *action,
+                     GVariant      *parameter,
+                     gpointer       data)
+{
+  gtk_popover_activate_default (GTK_POPOVER (data));
+}
+
 static void
 add_actions (GtkPopover *popover)
 {
@@ -1353,6 +1359,8 @@ gtk_popover_class_init (GtkPopoverClass *klass)
   container_class->add = gtk_popover_add;
   container_class->remove = gtk_popover_remove;
 
+  klass->activate_default = gtk_popover_activate_default;
+
   properties[PROP_RELATIVE_TO] =
       g_param_spec_object ("relative-to",
                            P_("Relative to"),
@@ -1407,6 +1415,16 @@ gtk_popover_class_init (GtkPopoverClass *klass)
                   G_TYPE_NONE,
                   0);
 
+  signals[ACTIVATE_DEFAULT] =
+    g_signal_new (I_("activate-default"),
+                  G_TYPE_FROM_CLASS (object_class),
+                  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                  G_STRUCT_OFFSET (GtkPopoverClass, activate_default),
+                  NULL, NULL,
+                  NULL,
+                  G_TYPE_NONE,
+                  0);
+
   gtk_widget_class_set_css_name (widget_class, "popover");
 }
 
index 615cd9a79e4da5a066c775334fca5c0a33110748..301fa298f7c80af8a4ff8e08ae1028f99becc954 100644 (file)
@@ -48,7 +48,8 @@ struct _GtkPopoverClass
 {
   GtkBinClass parent_class;
 
-  void (* closed) (GtkPopover *popover);
+  void (* closed)           (GtkPopover *popover);
+  void (* activate_default) (GtkPopover *popover);
 
   /*< private >*/